package com.siashan.toolkit.api.security.util.sign;

import cn.hutool.crypto.CryptoException;

/**
 * 接口验签算法
 *
 * @author Small
 * @since  V1.0.1
 **/
public enum SignType {
    /**
     * 摘要算法：MD5
     */
    MD5(true),
    /**
     * 摘要算法 ： HMACSHA256
     */
    HMACSHA256(true),

    /**
     * 非对称算法：RSA2
     * 全称：  SHA256withRSA
     */
    RSA2(false);


    /**
     * 是否需要加密key
     */
    private boolean needKey;


    SignType(boolean needKey) {
        this.needKey = needKey;
    }

    public boolean isNeedKey() {
        return needKey;
    }


    /**
     * 加密算法枚举映射
     *
     * @param type   加密算法
     * @return       加密算法枚举值
     */
    public static SignType parseSignType(String type) {
        try {
            return SignType.valueOf(type);
        } catch (Exception e) {
            throw new CryptoException(String.format("Invalid signType: %s", type));
        }
    }
}
